Micron Document
██████╗ ███████╗████████╗██╗██████╗ ███████╗██████╗ ██╗ █████╗
██╔══██╗██╔════╝╚══██╔══╝██║██╔══██╗██╔════╝██╔══██╗██║██╔══██╗
██████╔╝█████╗ ██║ ██║██████╔╝█████╗ ██║ ██║██║███████║
██╔══██╗██╔══╝ ██║ ██║██╔═══╝ ██╔══╝ ██║ ██║██║██╔══██║
██║ ██║███████╗ ██║ ██║██║ ███████╗██████╔╝██║██║ ██║
╚═╝ ╚═╝╚══════╝ ╚═╝ ╚═╝╚═╝ ╚══════╝╚═════╝ ╚═╝╚═╝ ╚═╝


🬧 The NomadNet Encyclopedia | Archives | Info
- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b- `b

🔍 Search

¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯

SWIG
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
top
mwbqSWIG (mwbgSimplified Wrapper and Interface Generator - Wrapper semplificato e generatore di interfacce) è un mwbwwrapper mwcaopen source utilizzato per collegare i programmi per elaboratore o mwcqlibrerie scritte in mwcgC o mwcwC++ con mwdalinguaggi di scripting come mwdqLua, mwdgPerl, mwdwPHP, mweaPython, mweqR, mwegRuby, mwewTcl e altri linguaggi come mwfaC Sharp, mwfqJava, mwfgJavaScript, mwfwGo, mwgaModula-3, mwgqOCaml, mwggOctave, e mwgwScheme. L'output può essere anche in formato mwhaXML o mwhqS-expressioni mwhgLisp.

Contents

Note

──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────

Funzionalità

L'obiettivo è quello di consentire la chiamata di funzioni native (C o C++) da altri linguaggi di programmazione passando tipi di dati complessi, mantenendo la memoria libera e l'ereditarietà delle classi dei vari linguaggi, ecc. Il programmatore scrive un file di interfaccia che contiene un elenco di funzioni C/C++ che devono essere rese visibili a un mwiginterprete. SWIG compila il file di interfaccia e genera normale codice C/C++ e il codice nel linguaggio di programmazione di destinazione. SWIG genera codice di conversione (Marshalling)cite-ref-1[1] o mwjwserializzazione per le funzioni con argomenti semplici; il codice di conversione per i tipi complessi di argomenti deve essere scritto dal programmatore. Lo strumento mwkaSWIG crea mwkqcodice sorgente che fornisce il collante tra C/C++ e il linguaggio di destinazione. A seconda del linguaggio software, questo collante è disponibile in due forme:

• una mwlalibreria condivisa che un interprete esistente può collegare come una qualche forma di modulo di estensione, o
• una libreria condivisa che può essere collegata ad altri programmi compilati nel linguaggio di destinazione (ad esempio, utilizzando mwlgJNI in Java).

SWIG non viene utilizzato per chiamare le funzioni interpretate da codice nativo, questo deve essere fatto dal programmatore manualmente.

Utilizzo

Ci sono due ragioni principali per incorporare un mwmgmotore di scripting in un programma C/C++ esistente:

• Il programma può essere personalizzato molto più velocemente attraverso un linguaggio di scripting invece di C/C++ (mwnqdicotomia di Ousterhout)cite-ref-2[2]. Il motore di script può anche essere esposto all'utente finale in modo che possa automatizzare i compiti scrivendo script.
• Anche se il prodotto finale non è quello di contenere il motore di script, può comunque essere molto utile per la scrittura di script di test.

Ci sono diversi motivi per creare librerie dinamiche che possono essere caricate in interpreti ancora esistenti, tra cui:

• Fornire accesso alla libreria software C/C++ che non ha un equivalente in linguaggio di scripting.
• Scrivere l'intero programma nel linguaggio di script prima e dopo la profilatura (mwpwottimizzazione), riscrivere il codice critico per le prestazioni in C o C++.

Concorrenti

Per Python similari funzioni sono offerte da SIP e mwqwBoost.python library.

Progetti che usano SWIG

• ZXID (Apache2 open source)
• Symlabs SFIS (commerciale)
• LLDB (debugger)
• GNU Radio

• mwtqOpenSCAD usa anche SWIG per il mwtgbinding per mwtwPython e mwuaJava.cite-ref-3[3]

Note

cite-note-11. È il processo di trasformazione della memoria rappresentazione di un oggetto in un formato di dati adatto alla memorizzazione o la trasmissione, e viene in genere utilizzato quando i dati devono essere spostati tra diverse parti di un programma per computer o da un programma all'altro.
cite-note-22. La dicotomia di Ousterhout formulata dallo scienziato informatico John Ousterhout afferma che i mwxglinguaggi di programmazione di alto livello tendono a dividersi in due gruppi, ciascuno con proprietà distinte e diversi usi: mwxwlinguaggio di programmazione di sistema e mwyalinguaggio di scripting.
cite-note-33. mwzaCGAL bindings, developed at GeometryFactory.

Bibliografia

• mwaa(EN) "mwaqExpose Your C/C++ Program's Internal API with a Quick SWIG mwagArchiviato il 1º settembre 2006 in Internet Archive." by Victor Volkman
• mwbg(EN) "mwbwPython Extensions In C++ Using SWIG" by Michael Fötsch
• "mwcgApplication overview for openSUSE" Presentazione di Klaus Kämpf

Voci correlate
Collegamenti esterni

• (EN) Sito ufficiale, su swig.org.
• citerefsourceforge(EN) SWIG, su SourceForge.
• SWIG, su packages.debian.org.
• Repository sorgenti di SWIG, su github.com.
• citereffree-software-directory(EN) SWIG, su Free Software Directory.